/**
 * Copyright (C), 2001-2022, www.bosssof.com.cn
 * FileName: BaseEntity
 * Author: Administrator
 * Date: 2022-10-21 14:38:16
 * Description:
 * <p>
 * History:
 * <author> Administrator
 * <time> 2022-10-21 14:38:16
 * <version> 1.0.0
 * <desc> 抽取的公共的字段所有的子entity从这里集成避免冗余
 */
package com.bosssoft.hr.train.j2se.example.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

import java.io.Serializable;
import java.util.Date;
import java.util.Objects;

/**
 * @ClassName: BaseEntity
 * @Description: 定义所有的entity的父类，减少代码容易，该类主要针对表的公共字段
 * 该类为抽象类不允许被继承所以定义为abstract class
 * lombok注解@Data 包含了 @getter @setter  @ToString @HashAndEqual 等
 * @Author: Administrator
 * @Date: 2022-10-21 14:38
 **/
@Data
@AllArgsConstructor
@NoArgsConstructor
public  class BaseEntity implements Serializable{
    /**
     * 主键
     */
    protected Long id;
    /**
     * 租户id
     */
    private Long tenantId;
    /**
     * 机构id 一个租户多个机构
     */
    private Long orgId;
    /**
     * 公司id 一个机构多个公司
     */
    private Long companyId;
    /**
     * 创建人id 这个id都是指出 primarry key的值
     */
    private Long createdBy;
    /**
     * 姓名 容易这个是避免通过id去关联查询
     */
    private String creator;
    /**
     * 记录插入的记录时间 用于追踪记录
     */
    private Date createdTime;
    /**
     * 修改记录的时候被更新
     */
    private Long updatedBy;
    /**
     * 记录更新的记录时间 用于追踪记录更新时间以及 确定是否最新的排在前面
     */
    private Date updatedTime;
    /**
     * 修改人
     */
    private String modifier;
    /**
     * 记录状态 正常为 1 注销为 0
     */
    private byte status;
    /**
     *  标记记录的版本好 每次加1
     */
    private Long version;

}
